Imports System.Threading

Module ProducerConsumer

    Public Buffer As Integer
    Public BufferEmpty As Boolean = True

    Sub Producer()
        Dim Value As Integer = 0
        Do
            If (BufferEmpty) Then
                BufferEmpty = False
                Buffer = Value

                If (Value = 0) Then
                    Value = 1
                Else
                    Value = 0
                End If
                Console.WriteLine("Producer: " & Buffer)
             
                Thread.CurrentThread.Sleep(1000)
            End If
        Loop While (True)
    End Sub

    Sub Consumer()
        Dim Value As Integer
        Do
            If (Not BufferEmpty) Then
                BufferEmpty = True
                Value = Buffer
                Console.WriteLine("Consumer: " & Value)
            End If
        Loop While (True)

    End Sub

    Sub Main()
        Dim ProducerThread As Thread
        Dim ConsumerThread As Thread

        ProducerThread = New Thread(AddressOf Producer)
        ConsumerThread = New Thread(AddressOf Consumer)

        ProducerThread.Start()
        ConsumerThread.Start()

        Console.ReadLine()  
    End Sub

End Module
